#include<bits/stdc++.h>
using namespace std;
using I=int;
using Lli=long long int;
const I N=4000;
const Lli MOD=1e9+7;
Lli facs[N+1];
Lli bins[N+1];
Lli dp[N][N];
Lli mpw(Lli x,Lli y){
Lli res=1;
for(x%=MOD;y;y>>=1,(x*=x)%=MOD)if(y&1)(res*=x)%=MOD;
return res;
}
Lli inv(Lli x){
return mpw(x,MOD-2);
}
Lli bin(I n,I k){
return facs[n]*inv(facs[n-k]*facs[k])%MOD;
}
I main(){
cin.tie(0)->sync_with_stdio(0);
I n;cin>>n;
facs[0]=1;
for(I i=1;i<=n;i++)facs[i]=facs[i-1]*i%MOD;
for(I i=0;i<=n-1;i++)bins[i]=bin(n,i);
dp[0][0]=1;
for(I i=0;i<n-1;i++)for(I j=0;j<=i;j++){
(dp[i+1][j+1]+=dp[i][j])%=MOD;
(dp[i+1][j]+=j*dp[i][j])%=MOD;
}
Lli res=0;
for(I i=0;i<=n-1;i++)for(I j=0;j<=i;j++)(res+=dp[i][j]*bins[i])%=MOD;
printf("%lli\n",res);
}
852. Peak Index in a Mountain Array | 461. Hamming Distance |
1748. Sum of Unique Elements | 897. Increasing Order Search Tree |
905. Sort Array By Parity | 1351. Count Negative Numbers in a Sorted Matrix |
617. Merge Two Binary Trees | 1450. Number of Students Doing Homework at a Given Time |
700. Search in a Binary Search Tree | 590. N-ary Tree Postorder Traversal |
589. N-ary Tree Preorder Traversal | 1299. Replace Elements with Greatest Element on Right Side |
1768. Merge Strings Alternately | 561. Array Partition I |
1374. Generate a String With Characters That Have Odd Counts | 1822. Sign of the Product of an Array |
1464. Maximum Product of Two Elements in an Array | 1323. Maximum 69 Number |
832. Flipping an Image | 1295. Find Numbers with Even Number of Digits |
1704. Determine if String Halves Are Alike | 1732. Find the Highest Altitude |
709. To Lower Case | 1688. Count of Matches in Tournament |
1684. Count the Number of Consistent Strings | 1588. Sum of All Odd Length Subarrays |
1662. Check If Two String Arrays are Equivalent | 1832. Check if the Sentence Is Pangram |
1678. Goal Parser Interpretation | 1389. Create Target Array in the Given Order |